home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / misc / thunt / t-hunt.bas < prev    next >
Encoding:
BASIC Source File  |  1994-11-13  |  8.9 KB  |  208 lines

  1. Begin:
  2.  CLS : Z1% = 0: IN$ = "": ENT% = 0: MSG$ = "": cwdata$ = ""
  3.  LOCATE 5, 15: PRINT " *************************************************"
  4.  LOCATE 6, 15: PRINT " *           FreeWare NOT for SALE !!!           *"
  5.  LOCATE 7, 15: PRINT " *************************************************"
  6.  LOCATE 8, 15: PRINT " *        Random Tone Generator Program          *"
  7.  LOCATE 9, 15: PRINT " *  with CW Message ID'er that can be time set.  *"
  8. LOCATE 10, 15: PRINT " *     Intended for Hidden Transmitter Hunts     *"
  9. LOCATE 11, 15: PRINT " *                                               *"
  10. LOCATE 12, 15: PRINT " *     by D.R. ' Kuby '  Kubichek, N6JSX/9       *"
  11. LOCATE 13, 15: PRINT " *                 Version 1a                    *"
  12. LOCATE 14, 15: PRINT " *     (copyright) 1994, Kuby Konsulting         *"
  13. LOCATE 15, 15: PRINT " *     Manitowoc, WI - All rights reserved       *"
  14. LOCATE 16, 15: PRINT " *                                               *"
  15. LOCATE 17, 15: PRINT " *************************************************"
  16. SOUND 880, 5: SOUND 987.77, 5: SOUND 783.99, 8: SOUND 392, 8: SOUND 587.33, 15
  17. FOR A% = 1 TO 10: SOUND 32767, 5: NEXT A%: CLS
  18.  
  19.    F% = 1200:            ' CW ID audio tone frequency
  20.    W% = 20:              ' Initial CODE speed WPM
  21.    IDER% = 150:          ' ID'er interval
  22.  
  23. CWDATread:
  24.    IF cwdata$ <> "" THEN GOTO 100
  25.    ON ERROR GOTO 100
  26.     OPEN "CW.DAT" FOR INPUT AS #1
  27.      IF EOF(1) THEN CLOSE #1
  28.      INPUT #1, cwdata$
  29. 100 CLOSE #1: RESET
  30.  
  31. Start:               
  32. CLS : hold% = 0: Z2% = 0
  33.  LOCATE 2, 15: PRINT "   N6JSX/9  Amateur Radio Hidden Transmitter"
  34.  LOCATE 3, 15: PRINT "    Random Audio Tones and CW-ID'er Program"
  35.  LOCATE 4, 15: PRINT "_______________________________________________"
  36.  LOCATE 5, 15: PRINT "                 Program Menu"
  37.  LOCATE 6, 15: PRINT
  38.  LOCATE 7, 15: PRINT "            A  = Start Random Tones ONLY"
  39.  LOCATE 8, 15: PRINT "            B  = Create NEW CW.DAT file"
  40.  LOCATE 9, 15: PRINT "            C  = Toggle CW ID on"
  41. LOCATE 10, 15: PRINT "            D  = ID'er timing set"
  42. LOCATE 11, 15: PRINT "            E  = Restart Program"
  43. LOCATE 12, 15: PRINT "           ESC = Quit Program or STOP Tones"
  44. LOCATE 13, 15: PRINT "_______________________________________________"
  45. LOCATE 14, 15: PRINT
  46. LOCATE 15, 15: PRINT "       This is the current CW.DAT file:"
  47. LOCATE 16, 15: PRINT "         >>>  "; cwdata$; " <<<"
  48. LOCATE 17, 15: PRINT
  49. LOCATE 18, 15: PRINT "         The CW ID speed is about"; W%; "WPM."
  50. LOCATE 19, 15: PRINT "    CW ID interval is"; IDER%; "PC timing counts."
  51. LOCATE 22, 15: PRINT "    Make your selection and press <──┘ ENTER"
  52. '---------------------------------------------------------------------
  53.  DO
  54.   IN$ = INKEY$
  55.   IF IN$ = CHR$(27) THEN GOTO ENDIT
  56.   IF IN$ <> "" THEN GOSUB Menu
  57.  LOOP
  58. Menu:
  59.   IF IN$ = "A" OR IN$ = "a" THEN GOTO RandomTones
  60.   IF IN$ = "B" OR IN$ = "b" THEN GOTO CWenter
  61.   IF IN$ = "C" OR IN$ = "c" GOTO CWDATsend
  62.   IF IN$ = "D" OR IN$ = "d" THEN GOTO IDERset
  63.   IF IN$ = "E" OR IN$ = "e" THEN GOTO Begin
  64.   IF IN$ = CHR$(27) THEN GOTO ENDIT
  65. RETURN
  66.  
  67. RandomTones:
  68.     Z% = 30000: R% = 20: Z2% = 1: IN$ = "": CLS
  69.   DO UNTIL IN$ = CHR$(27) OR IN$ = "E" OR IN$ = "e"
  70.     RANDOMIZE Z%
  71.        X% = INT(RND * Z%)
  72.        Y% = INT(RND * X%)
  73.        U% = ABS(RND * Y%) + 40
  74.      IF U% >= 20000 THEN U% = 32767
  75.       IN$ = INKEY$
  76.     RANDOMIZE R
  77.        S1% = INT(RND * R%)
  78.        T% = ABS(RND * S1%) + 1
  79.       IN$ = INKEY$
  80.     SOUND U%, T%
  81.       IN$ = INKEY$
  82.        Z% = Z% + 1
  83.       ZZ% = ZZ% + 1
  84.     IF Z1% >= 1 AND ZZ% >= ABS(IDER%) THEN PRINT TIME$, : GOSUB CWDATsend: PRINT
  85.     IF Z% >= 40000 THEN Z% = 30000
  86.   LOOP
  87. GOSUB Begin
  88.  
  89. CodeGenerator:
  90.   C$ = CHR$(ASC(I$) OR 32)
  91.    IF C$ = "a" OR C$ = "A" THEN B$ = ".-": GOTO CWsend
  92.    IF C$ = "b" OR C$ = "B" THEN B$ = "-...": GOTO CWsend
  93.    IF C$ = "c" OR C$ = "C" THEN B$ = "-.-.": GOTO CWsend
  94.    IF C$ = "d" OR C$ = "D" THEN B$ = "-..": GOTO CWsend
  95.    IF C$ = "e" OR C$ = "E" THEN B$ = ".": GOTO CWsend
  96.    IF C$ = "f" OR C$ = "F" THEN B$ = "..-.": GOTO CWsend
  97.    IF C$ = "g" OR C$ = "G" THEN B$ = "--.": GOTO CWsend
  98.    IF C$ = "h" OR C$ = "H" THEN B$ = "....": GOTO CWsend
  99.    IF C$ = "i" OR C$ = "I" THEN B$ = "..": GOTO CWsend
  100.    IF C$ = "j" OR C$ = "J" THEN B$ = ".---": GOTO CWsend
  101.    IF C$ = "k" OR C$ = "K" THEN B$ = "-.-": GOTO CWsend
  102.    IF C$ = "l" OR C$ = "L" THEN B$ = ".-..": GOTO CWsend
  103.    IF C$ = "m" OR C$ = "M" THEN B$ = "--": GOTO CWsend
  104.    IF C$ = "n" OR C$ = "N" THEN B$ = "-.": GOTO CWsend
  105.    IF C$ = "o" OR C$ = "O" THEN B$ = "---": GOTO CWsend
  106.    IF C$ = "p" OR C$ = "P" THEN B$ = ".--.": GOTO CWsend
  107.    IF C$ = "q" OR C$ = "Q" THEN B$ = "--.-": GOTO CWsend
  108.    IF C$ = "r" OR C$ = "R" THEN B$ = ".-.": GOTO CWsend
  109.    IF C$ = "s" OR C$ = "S" THEN B$ = "...": GOTO CWsend
  110.    IF C$ = "t" OR C$ = "T" THEN B$ = "-": GOTO CWsend
  111.    IF C$ = "u" OR C$ = "U" THEN B$ = "..-": GOTO CWsend
  112.    IF C$ = "v" OR C$ = "V" THEN B$ = "...-": GOTO CWsend
  113.    IF C$ = "w" OR C$ = "W" THEN B$ = ".--": GOTO CWsend
  114.    IF C$ = "x" OR C$ = "X" THEN B$ = "-..-": GOTO CWsend
  115.    IF C$ = "y" OR C$ = "Y" THEN B$ = "-.--": GOTO CWsend
  116.    IF C$ = "z" OR C$ = "Z" THEN B$ = "--..": GOTO CWsend
  117.    IF C$ = "1" THEN B$ = ".----": GOTO CWsend
  118.    IF C$ = "2" THEN B$ = "..---": GOTO CWsend
  119.    IF C$ = "3" THEN B$ = "...--": GOTO CWsend
  120.    IF C$ = "4" THEN B$ = "....-": GOTO CWsend
  121.    IF C$ = "5" THEN B$ = ".....": GOTO CWsend
  122.    IF C$ = "6" THEN B$ = "-....": GOTO CWsend
  123.    IF C$ = "7" THEN B$ = "--...": GOTO CWsend
  124.    IF C$ = "8" THEN B$ = "---..": GOTO CWsend
  125.    IF C$ = "9" THEN B$ = "----.": GOTO CWsend
  126.    IF C$ = "0" THEN B$ = "-----": GOTO CWsend
  127.    IF C$ = "." THEN B$ = ".-.-.-": GOTO CWsend
  128.    IF C$ = "?" THEN B$ = "..--..": GOTO CWsend
  129.    IF C$ = "," THEN B$ = "--..--": GOTO CWsend
  130.    IF C$ = "-" THEN B$ = "-...-": GOTO CWsend
  131.    IF C$ = "/" THEN B$ = "-..-.": GOTO CWsend
  132.    IF I$ = " " THEN B$ = " ": GOTO CWsend
  133.  
  134. CWsend:
  135.     PRINT I$; :                           'Display while sending
  136.    FOR C% = 1 TO LEN(B$)
  137.       IF MID$(B$, C%, 1) = "." THEN SOUND F%, S% / 2 ELSE IF MID$(B$, C%, 1) = "-" THEN SOUND F%, S% * 1.5 ELSE SOUND 32767, S% * .5
  138.       SOUND 32767, S% / 2:                   'Space after Dot/Dash
  139.    NEXT C%:                                'Get the next Dot or Dash
  140.       SOUND 32767, S% * .75:               'Space after letter
  141.   RETURN
  142.  
  143. IDERset:
  144. CLS : Z1% = 1: Z2% = 1
  145.  LOCATE 2, 15: PRINT "           N6JSX/9 Amateur Radio"
  146.  LOCATE 3, 15: PRINT " Hidden Transmitter Sound and CW-ID'er Program"
  147.  LOCATE 4, 15: PRINT "_______________________________________________"
  148.  LOCATE 5, 15: PRINT "              Computer timing counts"
  149.  LOCATE 6, 15: PRINT "                 (approximate) "
  150.  LOCATE 7, 15: PRINT "               1 min   [ 150 ] default "
  151.  LOCATE 8, 15: PRINT "               2 min     300   "
  152.  LOCATE 9, 15: PRINT "               3 min     450   "
  153. LOCATE 10, 15: PRINT "               4 min     600   "
  154. LOCATE 11, 15: PRINT "               5 min     750   "
  155. LOCATE 12, 15: PRINT "               9 min    1350   "
  156. LOCATE 13, 15: PRINT
  157. LOCATE 14, 15: PRINT "       Code Speed in Words per Minute"
  158. LOCATE 15, 15: PRINT "        Any speed from 1 - [ 20 ] WPM"
  159. LOCATE 16, 15: PRINT
  160. LOCATE 17, 15: PRINT "  Current timing count"; IDER%; "at about"; W%; "WPM."
  161. LOCATE 18, 15: PRINT
  162. LOCATE 19, 15: INPUT "  Enter CW ID PC timing count"; IDER%
  163. LOCATE 20, 15: INPUT "  Enter CW ID WPM"; W%
  164. IF ABS(IDER%) <= 0 THEN IDER% = 150
  165. IF ABS(W%) < 1 OR ABS(W%) > 20 THEN W% = 20
  166. LOCATE 21, 15: PRINT "  Timing count is"; ABS(IDER%); "at about"; ABS(W%); "WPM."
  167. LOCATE 23, 15: PRINT "          Press any key to continue"
  168. DO
  169.  IF INKEY$ <> "" THEN GOSUB Start
  170. LOOP
  171.  
  172. CWDATsend:       
  173.     S% = 21 / W%:         ' CW Tone duration formula
  174.     Z1% = 1: SOUND 32767, 5
  175.     ZZ% = 0:     ' ID'er count reset for next cycle
  176.      IF ENT% >= 1 THEN GOTO 140
  177.      IF MSG$ <> "" THEN GOTO 160
  178. 140 ON ERROR GOTO 150
  179.     OPEN "CW.DAT" FOR INPUT AS #2
  180.       IF EOF(2) THEN CLOSE #2
  181.        INPUT #2, MSG$
  182. 150 CLOSE #2: CLOSE
  183. 160 FOR I% = 1 TO LEN(MSG$)
  184.       I$ = MID$(MSG$, I%, 1): GOSUB CodeGenerator
  185.     NEXT I%
  186.   IF ENT% >= 1 THEN GOSUB Begin
  187.   IF Z2% >= 1 THEN RETURN ELSE GOSUB Start
  188.  
  189. CWenter:            
  190.     OPEN "CW.DAT" FOR OUTPUT AS #1
  191. CLS
  192.  LOCATE 1, 15: PRINT "             N6JSX/9 Amateur Radio"
  193.  LOCATE 3, 15: PRINT " Hidden Transmitter Sound and CW-ID'er Program"
  194.  LOCATE 4, 15: PRINT "_______________________________________________"
  195.  LOCATE 5, 10: PRINT "              CW.DAT file editor"
  196.  LOCATE 6, 10: PRINT ""
  197.  LOCATE 7, 15: PRINT "Press <──┘ ENTER twice when done with text input."
  198.   LOCATE 8, 1: PRINT " Usable charaters are ABC... or abcdefghijklmnopqrstuvwxyz 1234567890 ,-?./"
  199. LOCATE 10, 15: PRINT "Enter text below to be stored in the file CW.DAT:"
  200. PRINT : PRINT
  201.      LINE INPUT "Input text now:  "; TEXT$
  202.      ENT% = 1
  203.      PRINT #1, CHR$(34); TEXT$; " "; CHR$(34): CLOSE #1: CLOSE : CLS : GOSUB CWDATsend
  204.  
  205. ENDIT:
  206.    END
  207.  
  208.